package com.jzo2o.customer.service;

import com.jzo2o.api.customer.dto.response.AddressBookResDTO;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.customer.model.domain.AddressBook;
import com.jzo2o.customer.model.dto.request.AddressBookPageQueryReqDTO;
import com.jzo2o.customer.model.dto.request.AddressBookUpsertReqDTO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 地址薄 服务类
 * </p>
 *
 * @author itcast
 * @since 2023-07-06
 */
public interface IAddressBookService extends IService<AddressBook> {

    /**
     * 根据用户id和城市编码获取地址
     *
     * @param userId 用户id
     * @param cityCode 城市编码
     * @return 地址编码
     */
    List<AddressBookResDTO> getByUserIdAndCity(Long userId, String cityCode);

    /**
     * 新增地址
     * @param dto 新增地址参数
     */
    void addAddress(AddressBookUpsertReqDTO dto);

    /**
     * 分页查询地址簿
     * @param dto 分页参数
     * @return 分页结果
     */
    PageResult<AddressBookResDTO> queryAddressPage(AddressBookPageQueryReqDTO dto);

    /**
     * 编辑地址
     * @param dto
     */
    void updateAddress(AddressBookUpsertReqDTO dto,Long id);

    /**
     * 查询地址簿详情接口
     * @param id 地址簿id
     * @return 详情
     */
    AddressBook getDetail(Long id);

    /**
     * 设置/取消默认地址
     * @param flag 默认状态
     * @param id 修改的地址id
     */
    void defualt(Integer flag, Long id);

    /**
     * 获取默认地址
     * @return 地址详情
     */
    AddressBook getDefualt();

}
